package com.kele.dao;

import com.kele.domain.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserDao {
    /**
     * 一、用户模块
     */

    /**
     * 用户注册
     * @param user
     * @return
     */
    int insertUser(User user);

    /**
     * 用户登录
     * @param account
     * @param password
     * @return
     */
    User loginUser(@Param("account") String account,
                   @Param("password") String password);

    /**
     * 用户注销
     */
    void deleteAccount();

    /**
     * 用户修改密码
     * @param oldPassword
     * @param newPassword
     * @param rePassword
     * @return
     */
    int updateUserPassword(@Param("oldPassword") String oldPassword,
                           @Param("newPassword")String newPassword,
                           @Param("rePassword")String rePassword);


    /**
     * 通过用户名查询密码
     * @param account
     * @return
     */
    String queryPasswordByAccount(String account);

    /**
     * 用户修改信息(根据id) 或者管理员修改用户资料（账号除外）
     * @param user
     * @return
     */
    int updateUser(User user);


    /**
     * 二、管理员模块
     */

    /**
     * 查询所有用户
     * @return
     */
    List<User> findAll();

    /**
     * 根据用户名查询用户是否存在
     * @param account
     * @return
     */
     Integer checkAccount(String account);

    /**
     * 管理员添加用户
     * @param user
     * @return
     */
    User addUser(User user);

    /**
     *  管理员删除用户
     * @param id
     * @return
     */
    int deleteUser(int id);




    /**
     * 根据用户id查询用户
     * @param id
     * @return
     */
    User queryUserById(int id);

    /**
     * 通过用户名查询用户
     * @param account
     * @return
     */
    User queryByAccount(String account);


}
